package com.haixiaoke.saas.order.service;

import com.haixiaoke.saas.order.domain.OrderChargeItem;

import java.util.List;

/**
 * 订单收费项目及价格Service接口
 * 
 * @author panda
 * @date 2024-04-03
 */
public interface IOrderChargeItemService {
    /**
     * 查询订单收费项目及价格
     * 
     * @param chargeId 订单收费项目及价格主键
     * @return 订单收费项目及价格
     */
    OrderChargeItem selectOrderChargeItemByChargeId(Long chargeId);

    /**
     * 查询订单收费项目及价格列表
     * 
     * @param orderChargeItem 订单收费项目及价格
     * @return 订单收费项目及价格集合
     */
    List<OrderChargeItem> selectOrderChargeItemList(OrderChargeItem orderChargeItem);

    /**
     * 新增订单收费项目及价格
     * 
     * @param orderChargeItem 订单收费项目及价格
     * @return 结果
     */
    int insertOrderChargeItem(OrderChargeItem orderChargeItem);

    /**
     * 修改订单收费项目及价格
     * 
     * @param orderChargeItem 订单收费项目及价格
     * @return 结果
     */
    int updateOrderChargeItem(OrderChargeItem orderChargeItem);

    /**
     * 批量删除订单收费项目及价格
     * 
     * @param chargeIds 需要删除的订单收费项目及价格主键集合
     * @return 结果
     */
     int deleteOrderChargeItemByChargeIds(Long[] chargeIds);

    /**
     * 删除订单收费项目及价格信息
     * 
     * @param chargeId 订单收费项目及价格主键
     * @return 结果
     */
     int deleteOrderChargeItemByChargeId(Long chargeId);

    /**
     * 批量插入订单收费项目
     * @param orderChargeItemList
     * @return
     */
    int insertBatchOrderChargeItem(List<OrderChargeItem> orderChargeItemList);

    /**
     * 根据订单id查询订单收费项
     * @param orderId
     * @return
     */
    List<OrderChargeItem> selectOrderChargeItemByOrderId(String orderId);

    /**
     * 查询该订单的指定收费类型的收费过程
     * @param orderId
     * @param chargeType
     * @return
     */
    OrderChargeItem selectOrderChargeItemByOrderIdAndChargeType(String orderId, String chargeType);

    List<OrderChargeItem> selectOrderChargeItemByOrderIdOrLinkedOrderId(String orderId);

    int updateOrderChargeItemByOrderId(String orderId, String houseId);
}
